แนวทางเชิงฟังก์ชันเปลี่ยนแบบจำลองทางความคิดของนักพัฒนาจาก "การอัปเดตกล่องที่มีสถานะ" เป็น การประยุกต์ใช้การแปลงทางคณิตศาสตร์ กับค่าที่ไม่สามารถเปลี่ยนแปลงได้ ในอีลิกซ์ ข้อมูลจะไม่มีวันถูกเปลี่ยนแปลง มันเพียงแต่ถือกำเนิดใหม่ในรูปแบบที่แตกต่างออกไป
1. การอ้างอิงเชิงคณิตศาสตร์
เมื่อคุณเขียน $x = a + 1$ คุณไม่ได้กำลังกำหนดผลลัพธ์ให้กับตัวแปร แต่คุณแค่ กล่าวอ้าง ว่าสมการ $x$ และ $a + 1$ มีค่าเท่ากัน ซึ่งสะท้อนตรรกะเชิงพีชคณิต ที่ $x$ แสดงถึงค่าคงที่ในบริบทเฉพาะ
2. ความไม่สามารถเปลี่ยนแปลงเป็นสิ่งรับประกัน
ในอีลิกซ์ ค่าทั้งหมดไม่สามารถเปลี่ยนแปลงได้. ข้อมูลไม่สามารถเปลี่ยนแปลงได้อีกหลังจากสร้างแล้ว ซึ่งช่วยกำจัด "ผลข้างเคียง" ที่ฟังก์ชันอาจเปลี่ยนแปลงตัวแปรระดับโลกหรือวัตถุที่ส่งผ่านมาโดยไม่ตั้งใจ ทำให้โค้ดมีความคาดเดาได้และปลอดภัยในการใช้งานพร้อมกัน
3. การเปลี่ยนรูป แทน การแก้ไข
เราไม่เคยแก้ไขข้อมูลในที่เดิม อีลิกซ์ไม่มีคำสั่งกำหนดค่า แต่กลับพยายาม จับคู่ค่ากับรูปแบบ. เพื่อ "เปลี่ยน" ค่า เราส่งข้อมูลต้นฉบับผ่านฟังก์ชันเพื่อสร้างเวอร์ชันใหม่ทั้งหมด
"elixir"
iex> cap_name = String.capitalize name
"Elixir"
iex> name
"elixir" (ยังคงบริสุทธิ์อยู่!)